home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #15
/
Monster Media Number 15 (Monster Media)(July 1996).ISO
/
proboard
/
doing112.zip
/
DOING.H
< prev
next >
Wrap
C/C++ Source or Header
|
1996-04-25
|
4KB
|
147 lines
#ifndef DOING_H
#define DOING_H
typedef char feline_rec[31];
int OS2Inst(void)
{
asm {
mov ax,0x4010
int 0x2f
cmp ax,0x4010
jne installed
}
return 0;
installed:
return 1;
}
void SetOS2VMTitle(char far *desc)
{
char tmp;
if (strlen(desc)>12)
{
tmp=desc[12];
desc[12]=0;
} else tmp=0;
asm {
mov ah,0x64
mov dx,0x0001
mov cx,0x636c
mov bx,0x0000
les di,desc
int 0x21
}
if (tmp!=0) desc[12]=tmp;
}
#ifdef _PB_SDK_H
bool SetDesc(char *desc)
{
char fname[256];
char buf[31];
int count,rec;
FILE *f;
sprintf(fname,"%sFELINE.ON",SysPath);
if(OS2Inst() && getenv("OS2DOING")!=NULL)
{
if(*(unsigned int*)desc==0xFFFE) SetOS2VMTitle(desc+2);
else SetOS2VMTitle(desc);
}
for(count=0;count<10;count++)
{
if(access(fname,0)!=0)
{
memset(buf,0,31);
if((f=fopen(fname,"wb"))==NULL) return FALSE;
for(rec=0;rec<Config->numnodes;rec++)
fwrite(buf,sizeof(feline_rec),1,f);
fclose(f);
}
if((f=fopen(fname,"r+b"))!=NULL)
{
fseek(f,(NodeNumber-1)*sizeof(feline_rec),SEEK_SET);
if(strlen(desc)>30) desc[30]='\0';
if(fwrite(desc,sizeof(feline_rec),1,f)==1){fclose(f);return TRUE;}
fclose(f);
}
}
return FALSE;
}
#else
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <string.h>
#define TRUE (1)
#define FALSE (0)
typedef struct
{
char shellmsg[81]; /* Message to show when shelling */
char sysopname[36]; /* Name of sysop */
char txtpath[61]; /* Path for textfiles */
char mnupath[61]; /* Path for menu-files */
char msgpath[61]; /* Path for message base */
char uploadpath[61]; /* Uploadpath */
char editorname[61]; /* Name of external editor */
short newuserlevel; /* Level for new user */
short newuserloglevel; /* Loglevel for new user */
long newuserflags; /* New user flags */
short max_passinput; /* Maximum attempts for password entry */
short min_passlength; /* Minimum password length */
short inactivity_time; /* Inactivity time-out limit */
short max_sysop_pages; /* Maximum times sysop can be paged */
short pagebell_length; /* Length of page-bell (secs) */
short mailcheck; /* Check for mail at logon? */
short europe; /* European date format? */
short numnodes; /* # nodes */
} CFIG_PRO;
int SetDesc(char *desc, int NodeNumber)
{
char fname[256];
char buf[31];
int count,rec;
CFIG_PRO Config;
FILE *f;
if(OS2Inst())
{
if(*(unsigned int*)desc==0xFFFE) SetOS2VMTitle(desc+2);
else SetOS2VMTitle(desc);
}
sprintf(fname,"%s\\CONFIG.PRO",getenv("PROBOARD"));
fopen(fname,"rb");
fread(&Config,sizeof(CFIG_PRO),1,f);
fclose(f);
sprintf(fname,"%s\\FELINE.ON",getenv("PROBOARD"));
for(count=0;count<10;count++)
{
if(access(fname,0)!=0)
{
memset(buf,0,31);
if((f=fopen(fname,"wb"))==NULL) return FALSE;
for(rec=0;rec<Config.numnodes;rec++)
fwrite(buf,sizeof(feline_rec),1,f);
fclose(f);
}
if((f=fopen(fname,"r+b"))!=NULL)
{
fseek(f,(NodeNumber-1)*sizeof(feline_rec),SEEK_SET);
if(strlen(desc)>30) desc[30]='\0';
if(fwrite(desc,sizeof(feline_rec),1,f)==1){fclose(f);return TRUE;}
fclose(f);
}
}
return FALSE;
}
#endif
#endif